package 其他.报数游戏;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;

/**
 * 题目描述:
 *
 * 【报数游戏】100个人围成一圈，每个人有一个编码，编号从1开始到100。他们从1开始依次报数，报到为M的人自动退出圈圈，
 * 然后下一个人接着从1开始报数，直到剩余的人数小于M。请问最后剩余的人在原先的编号为多少？
 * 输入描述：输入一个整数参数M
 * 输出描述：如果输入参数M小于等于1或者大于等于100，输出“ERROR!”；否则按照原先的编号从小到大的顺序，以英文逗号分割输出编号字符串
 * 示例1：
 * 输入
 * 输出
 * 3
 * 58,91
 */

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int M = scanner.nextInt();
        String method = method(M);
        System.out.println(method);
    }

    private static String method(int m) {
        if (m<=1||m>=100){
            return "ERROR!";
        }
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            list.add(i+1); // 添加 100 个人的编号, 从 1---100
        }

        int count=0; // 计数器
        int index=0; // 记录在list 集合中遍历的下标.

        int time=0;
        while (list.size()>= m){
            time++;
            count++;

            if (index>list.size()-1){
                index=0;
            }

            if (count% m ==0){
                list.remove(index); //  删除第 index + 1 个元素 ~
                index--;
                count=0;
            }
            index++;
        }
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < list.size()-1; i++) {
            s.append(list.get(i)).append(",");
        }
        s.append(list.get(list.size()-1));
        System.out.println(time);
        return s.toString();
    }

}
